export const integerOnly = {
  // 指令绑定到元素时的钩子函数
  bind (el) {
    // 处理输入事件的回调函数
    const handleInput = (event) => {
      let value = event.target.value
      // 只保留数字字符，去掉其他字符（包括字母 e）
      value = value.replace(/[^0-9]/g, '')
      // 更新输入框的值
      event.target.value = value
      // 手动触发输入事件以通知 Vue 发生了更改
      event.target.dispatchEvent(new Event('input'))
    }
    // 给元素绑定输入事件监听器
    el.addEventListener('input', handleInput)
    // 在元素上存储回调函数，以便在解绑时移除监听器
    el._handleInput = handleInput
  },
  // 指令从元素解绑时的钩子函数
  unbind (el) {
    // 移除输入事件监听器
    el.removeEventListener('input', el._handleInput)
    delete el._handleInput
  }
}
export const floatOnly = {
  // 指令绑定到元素时的钩子函数
  bind (el) {
    // 处理输入事件的回调函数
    const handleInput = (event) => {
      let value = event.target.value
      // 只保留数字和小数点字符，并确保只有一个小数点
      value = value.replace(/[^0-9.]/g, '')
      // 如果有多个小数点，只保留第一个小数点
      const parts = value.split('.')
      if (parts.length > 2) {
        value = parts[0] + '.' + parts.slice(1).join('')
      }
      // 更新输入框的值
      event.target.value = value
      // 手动触发输入事件以通知 Vue 发生了更改
      event.target.dispatchEvent(new Event('input'))
    }
    // 给元素绑定输入事件监听器
    el.addEventListener('input', handleInput)
    // 在元素上存储回调函数，以便在解绑时移除监听器
    el._handleInput = handleInput
  },
  // 指令从元素解绑时的钩子函数
  unbind (el) {
    // 移除输入事件监听器
    el.removeEventListener('input', el._handleInput)
    delete el._handleInput
  }
}
